from collections.abc import Iterable, Iterator

strName = "thissIter"

print(isinstance(strName, Iterable))
print(isinstance(strName, Iterator))

print(dir(strName))

# 迭代器对象一定是可迭代对象 。。。

#迭代器协议
# 对象必须提供next()

# 自定义迭代器类
# 两个特性 __iter__() 和 __next__()

# >生成器  py中一边循环一边计算的机制 Generator*************************
# 生成器表达式
list = [i * 5 for i in range(5)]  #列表推导式
gen = (i * 5 for i in range(5))  # 生成器表达式

# 生成器函数
# py中使用了yield 关键字的函数称为生成器函数
# 类似于return,将一个或多个值返回
# yield 语句一次返回一个结果，在每个结果中间，挂起函数，执行next() ,再从新重挂起点继续往下执行


def Gen():
    print("start")
    yield "a"
    yield "b"
    yield "c"
    yield "d"


gen01 = Gen()


